/**
 * express-http-proxy 用来做反向代理转发的，这里用不到
 *
 * import 模式下，必须手动生成 __dirname
 *
 * express 的链式use路由模式是，前面的没有匹配上，才进入下一个
 *
 * console.log(process.env.LANG);  process依赖可引入，也可不引入。node中有很多这样的变量
 *
 * 代码  if('module' in globalThis){ module.exports = arr }
 */
import express from 'express';
import path from 'path';
import fs from 'fs';

import bodyParser from 'body-parser';

const __dirname = path.resolve();
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(express.static(path.resolve(__dirname, '')));

app.use(/^\/slow-api/, function (req, res) {
  // 注意 nginx转发这个请求时【已确定】，以及请求结果回传给nginx时【不确定】，已被限速 20KB/s
  console.log('handle-request:   ' + JSON.stringify(req.body).substring(11, 19));
  res.writeHead(200, { 'Content-Type': 'text/string;charset=utf-8' });
  res.end(
    `    receive api!  
    uri: ${req.path}  
    method: ${req.method}  
    params: ${JSON.stringify(req.params)}  
    query: ${JSON.stringify(req.query)} 
    body: ${JSON.stringify(req.body)}`
  );
});

app.use('', function (req, res) {
  console.log(req.url);
  fs.readFile('./index.html', function (err, fileData) {
    res.writeHead(200, { 'Content-Type': 'text/html;charset=utf-8' }); // 解决乱码问题
    res.end(fileData.toString());
  });
});

app.listen(1240, () => {
  console.log('你可以访问: http://localhost:1240 ');
});
